package cn.sunxyz.aop.annotation;

import cn.sunxyz.aop.aspect.AdviceAspect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 方法拦截可以 通过
 *
 * @see AdviceAspect#filter
 * 方法实现
 * <p>
 * <p>
 * sort属性的定义对应某一具体类只能存在一份
 * 如 xx.Java ：
 * 当多个切面同时切入同一个类时：
 * sort 属性 按照 AbstractAdviceAspect < AbstractInvocationHandler 去书写 且 sort不能重复 重复将发生覆盖
 * Created by yangrd on 2017/5/23.
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Aop {

    String pkg() default "";// 可为空 为空则代表扫描的所有包 (通过 contains进行判断 为空则忽略改条件)

    String cls() default "";// 可为空 为空则代表xx包下的所有类可以被代理 (通过 contains进行判断 为空则忽略改条件)

    int sort();
}
